/**
* BuildingManagement - controleaza  o cladire care economiseste energia.
* aceasta clasa arata cum putem controla obiectele dintr-un birou
* care pot fi orite in siguranta pe perioada noptii pentru a economisi
* enegie, chiar multa energie in cazul unui birou mare.
*/

public class BuildingManagement {
Asset things[] = new Asset[24];
int numItems = 0;

/** goodNight este apelata dintr-un timer la ora 22:00, sau cand apelam 
* comanda "shutdown"
*/
public void goodNight() {
  for (int i = 1; i < things.lenght; i++)
     if (things[i] instanceof PowerSwitchable)
        ((PowerSwitchable)things[i]).powerDown();
}

// goodMorning() va fi la fel, doar ca va apela powerUp().

/*
public void goodMorning() {
  for (int i = 1; i < things.lenght; i++)
     if (things[i] instanceof PowerSwitchable)
        ((PowerSwitchable)yhings[i]).powerUp();
}
*/

/** Adaugam un Asset acestei cladiri */
public void add(Asset thing){
  System.out.println("Adauga" + thing);
  things[numItems++] = thing;
}

/** Programul principal */
public static void main(String[] av) {
  BuildingManagement b1 = new BuildingManagement();
  b1.add(new RoomLights(101)); // controleaza becurile din camera 101
  b1.add(new EmergencyLight(101)); // si luminile de urgenta
  // adauga computerul de pe biroul #4 din camera 101
  b1.add(new ComputerCPU(10104));
  //adauga monitorul
  b1.add(new ComputerMonitor(10104));

  //dupa un timp soarepe apune si...
  b1.goodNight();
   }
 }
